<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
	<script src="index.js"></script>
</head>
<body>

</body>
<script>
	// 1- then是Promise原型对象下的方法(完成）
	// 2- then函数返回的是一个Promise实例。(完成）
	//    p1是一个Promise实例，其状态与值受then接收并执行的回调函数的返回值的影响。
	//    2-1：回调函数返回的是非Promise,那么p1的状态为成功，值为函数返回值
	//    2-2：回调函数返回的是Promise,那么p1的状态以及值与返回的Promise实例相同
	//    2-3：回调函数中如果有异常，那么p1的状态为失败，值为异常信息。
	// 3- then函数接收两个参数（类型为函数）第一个参数为成功回调，第二个参数为失败回调（完成）
	//    如果p的状态为成功，执行成功回调，成功回调接收的值为成功值（完成）
	//    如果p的状态为失败，执行失败回调，失败回调接收的值为失败值（完成）
	//    成功与失败回调函数的执行是异步的。（完成）
	const p = new Promise(function (resolve, reject) {
		// resolve(1);
		reject(2);
		// throw "异常2"
	})
	const my = new Promise(()=>{})
	const p1 = p.then(function(value){
		// throw "异常4";
		// console.log("成功回调",value);
		// return 100;// 非Promise
		// return new Promise(()=>{})
		// return my;
		// return new Promise((resolve)=>resolve(101));
		// return new Promise((resolve,reject)=>reject(102));
	},function(reason){
		// console.log("失败回调",reason);
		// return 200;
		// return new Promise(()=>{});
		return new Promise((resolve)=>resolve(201));
		// return new Promise((resolve,reject)=>reject(202));
		// throw "异常3";
	});
	
	console.log(p1);
</script>
</html>